<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    
</body>
</html>
<script>
//WeakSet 结构与 Set 类似，也是不重复的值的集合
// 它与 Set 有两个区别??
   /*WeakSet 的成员只能是对象，而不能是其他类型的值
     WeakSet 没有size属性，没有办法遍历它的成员。  
        */
        const ws = new WeakSet();      //它的成员只能是对象 
        ws.add(1);                
        // TypeError: Invalid value used in weak set
        ws.add(Symbol());
        // TypeError: invalid value used in weak set    



  //WeakMap与Map的区别有两点。??
    /*WeakMap只接受对象作为键名（null除外），不接受其他类型的值作为键名。
      */
      const map = new WeakMap();
      map.set(1, 2);
      // TypeError: 1 is not an object!
      map.set(Symbol(), 2);
      // TypeError: Invalid value used as weak map key
      map.set(null, 2);
      // TypeError: Invalid value used as weak map key    
      //上面代码中，如果将数值1和Symbol值作为 WeakMap 的键名，都会报错。
</script>